package com.active.activedemo.model;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class ChartElement {

    /**
     * 资源ID
     */
    private String resourceId = "";
    /**
     * 属性，这是最关键的，每一个元素都拥有不同的属性项，如线对象、用户任务对象、网关对象等等，以继承方式实现即可
     */
    private BaseProperty properties;
    /**
     * 流程环节的activiti类型
     * key为id
     * 形似：
     * "stencil": {
     "id": "BPMNDiagram"
     }
     */
    private Map<String, String> stencil = new HashMap<>();
    /**
     * 子组件
     */
    private List<ChartElement> childShapes = new ArrayList<>();
    /**
     * 组件外连的其他组件Id
     * 形似：
     * "outgoing": [
     {
     "resourceId": "sid-F642A425-567D-4D05-9861-E04640D0E4E5"
     },
     {
     "resourceId": "sid-F642A425-567D-4D05-9861-E04640D0E4E5"
     }
     ]
     */
    private List<Map<String, String>> outgoing = new ArrayList<>();
    /**
     * 组件所在位置。
     * 形似：
     * "bounds": {
     "lowerRight": {
     "x": 324.64844687000755,
     "y": 189.4097335362338
     },
     "upperLeft": {
     "x": 280.62889687999245,
     "y": 189.2191727137662
     }
     }
     * lowerRight:组件的右下角坐标
     * upperLeft:组件的左上角坐标
     */
    private Map<String, Coordinate> bounds = new HashMap<>();
    /**
     * 连接线上的拐点坐标
     * 形似：
     * "dockers": [
     {
     "x": 50,
     "y": 40
     },
     {
     "x": 20.5,
     "y": 20.5
     }
     ]
     */
    private List<Coordinate> dockers = new ArrayList<>();
    /**
     * 连接线的目标组件ID
     * 形如：
     * "target": {
     "resourceId": "sid-AB6219CA-5A68-4CFC-A7E1-D8F7D6375519"
     }
     */
    private Map<String, String> target = new HashMap<>();

}







